// 导入axios及相关类型
import axios, {
  type AxiosInstance, // Axios实例类型
  AxiosError, // Axios错误类型
  type AxiosResponse, // 响应数据类型
  type InternalAxiosRequestConfig, // 请求配置类型
} from 'axios';

// 创建axios实例，设置默认超时时间为5秒
const service: AxiosInstance = axios.create({ timeout: 5000 });

// 请求拦截器
service.interceptors.request.use(
  // 请求成功时的处理
  (config: InternalAxiosRequestConfig) => {
    // 可以在发送请求前对config进行处理，例如添加token等
    return config; // 返回处理后的配置
  },
  // 请求失败时的处理
  (error: AxiosError) => {
    console.log(error); // 打印错误信息
    return Promise.reject(); // 返回一个被拒绝的Promise
  }
);

// 响应拦截器
service.interceptors.response.use(
  // 响应成功时的处理
  (response: AxiosResponse) => {
    // 如果响应状态码是200，返回响应数据
    if (response.status === 200) {
      return response;
    }
    // 否则返回一个被拒绝的Promise
    return Promise.reject();
  },
  // 响应失败时的处理
  (error: AxiosError) => {
    console.log(error); // 打印错误信息
    return Promise.reject(); // 返回一个被拒绝的Promise
  }
);

// 导出配置好的axios实例
export default service;
